← Índice · NETPAY-SIM-01 · Simulador Bridge
NetPay

El agente no calcula. Opera el simulador.

Cómo doce campos capturados en conversación se convierten en el mismo bloque de resultado que un humano lee en pantalla, sin reimplementar una sola fórmula de pricing.

Simulador Tarjeta Presente · v20260528 11 hojas · 14 celdas de entrada · B88:F93 DashOne.ai
01 — Arquitectura

Las cuatro capas del puente

Cada capa tiene una sola responsabilidad. El agente extrae y valida, el Web App escribe y lee, la hoja calcula. Ninguna de las tres invade a las otras: ese aislamiento es lo que permite cambiar de motor más adelante sin tocar al agente.

01 — Origen 02 — Capa agente 03 — Puente 04 — Motor Socio comercial Describe el comercio en lenguaje natural Los 12 campos 01Giro 02Familia 03Volumen Mensual Total 04Ticket Promedio 05% Débito (venta directa) 06% Crédito (venta directa) 07% Internacional 08% AmEx (venta directa) 09% MSI PROSA/eGlobal 10% MSI AmEx 11SmartPOS WiFi — cant. + modelo 12SmartPOS 3G — cant. + modelo Skill · extrae y valida ✓ Normaliza giro y familia contra el catálogo de la hoja ✓ Propone la Sugerencia de Distribución si no la traen ✓ Suma de porcentajes = 100% con tolerancia ±0.05 ✓ Exige modelo si cantidad > 0 ✕ Nunca hace aritmética de pricing 422 · no se escribe Si una validación falla, ninguna celda se toca. Apps Script Web App 1structureCheck() 2LockService · 30 s 3Snapshot de las 14 celdas 4Escribe los named ranges 5flush() 6Lee OUT_RESULTADO 7Restore en finally 8Append al Log Sin direcciones A1 Todo por getRangeByName(). El mapa se ancla por etiqueta. Hoja «Simulador» 14 celdas IN_* entradas amarillas B88:F93 · OUT_RESULTADO Las 10 hojas que alimentan Distribución Cartera NP Equipos Tope Débito VD vs MSI Tasas Mín · iterativo Parámetros TDI MSI Margen · SmartPOS POST /simulate + token setValue → flush → getValue Humano receptor asesor · pricing · comercio SimulationResponse veredicto · comisión red comercial en 2 escenarios · 3 tasas mínimas bloque 6×5 crudo · warnings · simulador_version · request_id Fuente de verdad El .xlsx en Drive manda. El Sheet nativo es artefacto derivado y desechable. Ninguna fórmula de pricing vive en el código: si el resultado cambia, cambió el simulador, no el software.

← Desliza horizontalmente para ver el diagrama completo

02 — Ciclo de una request

Ocho pasos, y dónde falla cada uno

La hoja es un recurso compartido con estado. Todo el diseño gira alrededor de eso: se verifica antes de tocar nada, se serializa el acceso, y se devuelve al baseline pase lo que pase.

1 structureCheck() Los named ranges existen y OUT_RESULTADO sigue midiendo 6×5 SCHEMA_DRIFT 2 LockService · espera 30 s Un solo caller a la vez sobre la hoja compartida LOCK_TIMEOUT 3 Snapshot Guarda el valor actual de las 14 celdas de entrada 4 Escribe los inputs Solo named ranges IN_*. Nada fuera de esas 14 celdas 5 flush() Fuerza el recálculo antes de leer. Sin esto se lee lo anterior 6 Lee OUT_RESULTADO Valores y texto formateado del bloque B88:F93 CALC_ERROR 7 Restore · dentro de finally La hoja vuelve al baseline aunque el paso 6 haya reventado siempre corre 8 Append al Log request_id · inputs · outputs · versión · timestamp trazabilidad Response 200 · elapsed_ms

← Desliza horizontalmente para ver el diagrama completo

03 — Por qué así

Las cuatro decisiones que sostienen el diseño

BR1

El workbook es la fuente de verdad

Ninguna tasa, margen o comisión se reimplementa. Reimplementar significa hacerse dueño del riesgo de divergencia antes de haber probado que la interacción siquiera funciona.

BR7

La hoja siempre vuelve al baseline

Snapshot antes, restore en finally. Un recurso compartido con estado que queda sucio es una bomba de tiempo para el siguiente caller.

Mapa

Anclaje por etiqueta, no por dirección

El bootstrap encuentra cada celda por su texto y crea el named range. Cuando NetPay mande la versión siguiente del simulador, el mapa se reconstruye o falla ruidosamente. Nunca lee la celda equivocada en silencio.

BR5

Un escenario rechazado se devuelve completo

El endpoint reporta el veredicto, no lo suaviza. Los casos fuera de política escalan a pricing, que es exactamente lo que hoy hace el humano.